package dd;

import java.util.*;

/**
 * Creared with IntelliJ IDEA.
 * Description:描述：集合框架及其背后的数据结构  是定义在java.util下的
 * User:Administrator
 * Date:2021-12-30
 * Time:19:26
 */
//collection是一个接口
//泛型  一种语法
public class TestDemo {
    public static void main(String[] args) {
        Map<String,String> map = new HashMap<>();//最多使用hash
        map.put("及时雨","宋江");//放k,v
        map.put("国民男神","yxd");
        System.out.println(map);//存元素时  会被（通过一个函数）加工  不是先放谁就是谁
        Set<Map.Entry<String, String>> entrySet = map.entrySet();// set接口 里面是每一个元素数据类型
        for (Map.Entry<String, String> entry:entrySet) {
            System.out.println("key:" + entry.getKey() + "value:" +  entry.getValue());
        }
    }
    //Map接口
    public static void main3(String[] args) {
        Map<String,String> map = new HashMap<>();//最多使用hash
        map.put("及时雨","宋江");//放k,v
        System.out.println(map.get("及时雨"));//根据K获得V   <K,V>
        String ret = map.getOrDefault("及时雨2","sad");//根据现有的k获得v没有就返回sad
        System.out.println(ret);
        System.out.println(map.containsKey("及时雨"));//是否包含这个k

        Map<String,String> map2 = new TreeMap<>();//是有序性的  里面是有通过Comparator比较器比较的

    }
    //collection接口
    public static void main2(String[] args) {
        Collection<String> collection = new ArrayList<>();//引用了具体的实现类
        // 里面有toString方法 就算这个实现类没有 但其实现的接口里面也有
        collection.add("ksajdsa");//里面的具体方法也有 增加元素
        collection.add("hh");
        System.out.println(collection.size());//元素个数
        System.out.println(collection);
        Object[] objects = collection.toArray();//把集合当中的元素转换为数组  泛型数组  返回值是Object
        // 可以转换为其他类型 但是要强转(强烈不建议对数组进行强制类型转换 可能会报错)只把返回值类型转换了 但是没有把里面的每一个元素进行转换
        //可以把integer[]转换成object[]但返回来转就有问题了  object[] 和String是平级的 其父类都是object
        System.out.println(Arrays.toString(objects));
        collection.clear();//清空元素
        System.out.println(collection);
        System.out.println(collection.isEmpty());//判断是否为空

    }
    public static void main1(String[] args) {
        Collection<String> collection = new ArrayList<>();//<>泛型里面可以指定放什么  但只能放类类型  不能放基本类型
        collection.add("ksajdsa");
        Collection<Integer> collection1 = new ArrayList<>();//Integer 就是int 的包装类型 基本类型只能放其包装类
        collection1.add(1);

    }
}
